#ifndef COMMON_HPP_
#define COMMON_HPP_

#include <iostream>
#include <list>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/epoll.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <vector>
#include <queue>
#include <pthread.h>
#include <string>
#include <set>
#include <sys/stat.h>
#include <unistd.h>
#include <sys/mman.h>
#include <stddef.h>


#define SERVER_IP "127.0.0.1"
#define SERVER_PORT 3000
#define EPOLL_SIZE 5000
#define THREAD_NUM 5                // 线程池线程数
#define MAX_TASKS_NUM 20
#define BUF_SIZE 8124               // HTTP请求报文
#define MAX_LINE 8192               // HTTP响应报文
#define SHORT_LINE 512              // 文件名的最大长度
#define TIMEOUT_DEFAULT 5000        // 长连接的默认超时时间
#define LOG_FILE_NAME "./logfile"   // log文件路径

#define BLANK " "
#define CR "\r"     // 回车符
#define LR "\n"     // 换行符

using std::cout;
using std::endl;

enum Request_Type
{
    METHOD_GET,
    METHOD_POST,
    METHOD_HEAD,
    METHOD_PUT,
    METHOD_DELETE,
    METHOD_OPTIONS,
    METHOD_TRACE,
    METHOD_CONNECT,
    METHOD_NOT_SUPPORT
};

enum
{
    PARSE_METHOD,
    PARSE_URL,
    PARSE_PROCOTOL_VERSION,
    PARSE_HEADER,
    PARSE_BODY,
    PARSE_DONE // test
};

enum
{
    HTTP_1_1,
    HTTP_1_0,
    NOT_SUPPORT_PROTOCOL
};

#endif